package Gather.StreamExercise.StreamDome001;

import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;

/**
 * ClassName:StreamDome009
 * Package:Gather.StreamExercise
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/23-22:53
 * @Version:v1.0
 */
public class StreamDome009 {
    /*Stream<R>map(Function<T,R>mapper) 转换流中的数据类型*/
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "张无忌-15","张强-14",
                "张三丰-100", "张翠山-38", "张良-40", "王二麻子-37", "谢广坤-58");

        //只获取里面的年龄并进行打印          @FunctionalInterface(函数式接口)
        //String --->  int
        //第一个类型：表示流中原本的类型
        //第二种类型：要转成之后的类型
        //apply的形参s：依次表示流里面的每一个数据
        //返回值表示转换之后的数据

        //当map方法执行完毕后流上的数据就变成了整数
        //所以在下面forEach当中,s依次表示流里面的每一个数据,这个数据现在就是整数了
        list1.stream().map(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                //split切割  regex正则
                String[] arr = s.split("-");
                String ageString = arr[1];
                int age = Integer.parseInt(ageString);//转换成整数类型
                return age;
            }
        }).forEach(s-> System.out.println(s));


        System.out.println("=============");
        list1.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s-> System.out.println(s));
                
    }
}
